return {
  "nvim-telescope/telescope.nvim",
  dependencies = { "nvim-lua/plenary.nvim" },
  cmd = "Telescope",
  keys = {
    { "<leader>ff", '<CMD>Telescope find_files<CR>' },
    { "<leader>fg", '<CMD>Telescope live_grep<CR>' },
    { "<leader>fb", '<CMD>Telescope buffers<CR>' },
    { "<leader>fh", '<CMD>Telescope help_tags<CR>' },
    { "<leader>fp", '<CMD>Telescope projects<CR>' },
  },
  config = function()
    local extensions = {}
    if vim.fn.has("linux") == 1 then
      extensions['fzf'] = {
        fuzzy = true,
        override_generic_sorter = true,
        override_file_sorter = true,
        case_mode = "smart_case",
      }
    end
    require("telescope").setup({
      defaults = {
        mappings = {
          i = {
            ["<C-q>"] = require('telescope.actions').close,
            ["<C-h>"] = require('telescope.actions').which_key,
            ["<C-j>"] = require('telescope.actions').move_selection_next,
            ["<C-k>"] = require('telescope.actions').move_selection_previous
          },
          n = {
            ["q"] = require('telescope.actions').close
          }
        },
        file_ignore_patterns = { ".git", "__pycache__/", "build/", ".cache" },
        extensions = extensions
      }
    })
    if vim.fn.has("linux") == 1 then
      require("telescope").load_extension("fzf")
    end
    require('telescope').load_extension('projects')
  end
}
